"""
map(func, lst)，将传入的函数变量func作用到lst变量的每个元素
reduce(func，lst)，其中func必须有两个参数。
每次func计算的结果继续和序列的下一个元素做累积计算
filter(func, lst)函数用于过滤序列,
 			过滤掉不符合条件的元素, 返回一个 filter 对象
1）计算list1序列中各个数字的2次方
   list1=[1,2,3,4,5]
2）计算list2序列中各个数字的累加和
   list2=[1,2,3,4,5]
3）过滤掉list3中的奇数，使其元素均为偶数
   list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

"""
from functools import reduce

list1 = [1, 2, 3, 4, 5]
# 推导式
li1 = [i ** 2 for i in list1]
print(li1)
# 高阶函数
result1 = map(lambda a: a ** 2, list1)
# print(result1)
print(list(result1))
# 偶数变成原来的2倍，奇数不变
result2 = map(lambda a: a * a if a % 2 == 0 else a, list1)
print(list(result2))
li2 = [i ** 2 if i % 2 == 0 else i for i in list1]
print(li2)
list2=[1,2,3,4,5]
r3=reduce(lambda a,b:a+b,list2)
print(r3)

list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result3=filter(lambda a:a if a%2==0 else '',list3)
print(list(result3))